home *** CD-ROM | disk | FTP | other *** search
/ Windows Expert / Windows Expert.iso / windownt / help.zip / HELPCONV / LEX_YY.C < prev    next >
C/C++ Source or Header  |  1991-12-26  |  16KB  |  805 lines

  1. # include "stdio.h"
  2. # define U(x) x
  3. # define NLSTATE yyprevious=YYNEWLINE
  4. # define BEGIN yybgin = yysvec + 1 +
  5. # define INITIAL 0
  6. # define YYLERR yysvec
  7. # define YYSTATE (yyestate-yysvec-1)
  8. # define YYOPTIM 1
  9. # define YYLMAX 200
  10. # define output(c) putc(c,yyout)
  11. # define input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar)
  12. # define unput(c) {yytchar= (c);if(yytchar=='\n')yylineno--;*yysptr++=yytchar;}
  13. # define yymore() (yymorfg=1)
  14. # define ECHO fprintf(yyout, "%s",yytext)
  15. # define REJECT { nstr = yyreject(); goto yyfussy;}
  16. int yyleng; extern char yytext[];
  17. int yymorfg;
  18. extern char *yysptr, yysbuf[];
  19. int yytchar;
  20. FILE *yyin ={stdin}, *yyout ={stdout};
  21. extern int yylineno;
  22. struct yysvf { 
  23.     struct yywork *yystoff;
  24.     struct yysvf *yyother;
  25.     int *yystops;};
  26. struct yysvf *yyestate;
  27. extern struct yysvf yysvec[], *yybgin;
  28. #include "token.h"
  29. # define YYNEWLINE 10
  30. yylex(){
  31. int nstr; extern int yyprevious;
  32. while((nstr = yylook()) >= 0)
  33. yyfussy: switch(nstr){
  34. case 0:
  35. if(yywrap()) return(0); break;
  36. case 1:
  37.                   return(COMMENT);
  38. break;
  39. case 2:
  40.                    return(COMMENT);
  41. break;
  42. case 3:
  43.                  return(COLON);
  44. break;
  45. case 4:
  46.                       return(COLON);
  47. break;
  48. case 5:
  49.                return(NTEXT);
  50. break;
  51. case 6:
  52.                       return(NTEXT);
  53. break;
  54. case 7:
  55.                      return(NL);
  56. break;
  57. case 8:
  58.            return(HDR);
  59. break;
  60. case 9:
  61.                   return(NDX1);
  62. break;
  63. case 10:
  64.                return(NDX2);
  65. break;
  66. case 11:
  67.                  return(HPT);
  68. break;
  69. case 12:
  70.                 return(EHPT);
  71. break;
  72. case 13:
  73.                    return(PARA);
  74. break;
  75. case 14:
  76.                   return(PARA);
  77. break;
  78. case 15:
  79.         return(FNREF);
  80. break;
  81. case 16:
  82.         return(HDREF);
  83. break;
  84. case 17:
  85.              return(STYLE);
  86. break;
  87. case 18:
  88.             return(ESTYLE);
  89. break;
  90. case 19:
  91.                   return(MARGIN);
  92. break;
  93. case 20:
  94.              return(MARGIN);
  95. break;
  96. case 21:
  97.                   return(NOTE);
  98. break;
  99. case 22:
  100.              return(NOTE);
  101. break;
  102. case 23:
  103.                  return(ENOTE);
  104. break;
  105. case 24:
  106.                  return(XMP);
  107. break;
  108. case 25:
  109.                 return(EXMP);
  110. break;
  111. case 26:
  112.                 return(LI);
  113. break;
  114. case 27:
  115.             return(SL);
  116. break;
  117. case 28:
  118.   return(SLC);
  119. break;
  120. case 29:
  121.            return(ESL);
  122. break;
  123. case 30:
  124.              return(DL);
  125. break;
  126. case 31:
  127.                  return(EDL);
  128. break;
  129. case 32:
  130.                 return(DTHD);
  131. break;
  132. case 33:
  133.                 return(DDHD);
  134. break;
  135. case 34:
  136.                 return(DT);
  137. break;
  138. case 35:
  139.                 return(DD);
  140. break;
  141. case 36:
  142.           return(DL);
  143. break;
  144. case 37:
  145.               return(EDL);
  146. break;
  147. case 38:
  148.                   return(DT);
  149. break;
  150. case 39:
  151.                   return(DD);
  152. break;
  153. case 40:
  154.         return(ARTWORK);
  155. break;
  156. case 41:
  157.              return(FN);
  158. break;
  159. case 42:
  160.                  return(EFN);
  161. break;
  162. case 43:
  163.              return(USERDOC);
  164. break;
  165. case 44:
  166.             return(EUSERDOC);
  167. break;
  168. case -1:
  169. break;
  170. default:
  171. fprintf(yyout,"bad switch yylook %d",nstr);
  172. } return(0); }
  173. /* end of yylex */
  174. #include "main.c"
  175. int yyvstop[] ={
  176. 0,
  177.  
  178. 5,
  179. 0,
  180.  
  181. 5,
  182. 0,
  183.  
  184. 5,
  185. 0,
  186.  
  187. 7,
  188. 0,
  189.  
  190. 6,
  191. 0,
  192.  
  193. 4,
  194. 0,
  195.  
  196. 2,
  197. 5,
  198. 0,
  199.  
  200. 1,
  201. 5,
  202. 0,
  203.  
  204. 2,
  205. 0,
  206.  
  207. 1,
  208. 0,
  209.  
  210. 9,
  211. 0,
  212.  
  213. 13,
  214. 0,
  215.  
  216. 35,
  217. 0,
  218.  
  219. 34,
  220. 0,
  221.  
  222. 8,
  223. 0,
  224.  
  225. 10,
  226. 0,
  227.  
  228. 26,
  229. 0,
  230.  
  231. 19,
  232. 0,
  233.  
  234. 14,
  235. 0,
  236.  
  237. 21,
  238. 0,
  239.  
  240. 27,
  241. 0,
  242.  
  243. 39,
  244. 0,
  245.  
  246. 38,
  247. 0,
  248.  
  249. 30,
  250. 0,
  251.  
  252. 31,
  253. 0,
  254.  
  255. 42,
  256. 0,
  257.  
  258. 23,
  259. 0,
  260.  
  261. 29,
  262. 0,
  263.  
  264. 41,
  265. 0,
  266.  
  267. 17,
  268. 0,
  269.  
  270. 11,
  271. 0,
  272.  
  273. 20,
  274. 0,
  275.  
  276. 22,
  277. 0,
  278.  
  279. 24,
  280. 0,
  281.  
  282. 3,
  283. 0,
  284.  
  285. 33,
  286. 0,
  287.  
  288. 32,
  289. 0,
  290.  
  291. 18,
  292. 0,
  293.  
  294. 12,
  295. 0,
  296.  
  297. 25,
  298. 0,
  299.  
  300. 15,
  301. 0,
  302.  
  303. 16,
  304. 0,
  305.  
  306. 37,
  307. 0,
  308.  
  309. 36,
  310. 0,
  311.  
  312. 43,
  313. 0,
  314.  
  315. 40,
  316. 0,
  317.  
  318. 44,
  319. 0,
  320.  
  321. 28,
  322. 0,
  323. 0};
  324. # define YYTYPE int
  325. struct yywork { YYTYPE verify, advance; } yycrank[] ={
  326. 0,0,    0,0,    1,3,    0,0,    
  327. 0,0,    0,0,    0,0,    0,0,    
  328. 0,0,    7,7,    0,0,    1,4,    
  329. 0,0,    3,0,    0,0,    0,0,    
  330. 0,0,    0,0,    7,0,    0,0,    
  331. 8,8,    0,0,    0,0,    0,0,    
  332. 0,0,    0,0,    0,0,    0,0,    
  333. 0,0,    8,0,    0,0,    0,0,    
  334. 0,0,    1,3,    0,0,    0,0,    
  335. 0,0,    2,7,    0,0,    1,5,    
  336. 7,7,    3,0,    0,0,    0,0,    
  337. 0,0,    0,0,    7,22,    1,3,    
  338. 2,8,    1,3,    0,0,    8,8,    
  339. 15,41,    15,42,    7,7,    0,0,    
  340. 7,7,    8,23,    0,0,    1,6,    
  341. 2,6,    3,0,    27,58,    0,0,    
  342. 0,0,    8,8,    0,0,    8,8,    
  343. 0,0,    14,38,    14,38,    14,38,    
  344. 14,38,    14,38,    14,38,    14,38,    
  345. 14,38,    14,38,    14,38,    38,71,    
  346. 42,75,    44,77,    46,80,    0,0,    
  347. 19,48,    0,0,    37,69,    47,82,    
  348. 0,0,    0,0,    43,76,    45,79,    
  349. 50,85,    51,86,    0,0,    44,78,    
  350. 46,81,    26,56,    0,0,    28,59,    
  351. 5,9,    47,83,    6,10,    0,0,    
  352. 0,0,    6,11,    6,12,    6,13,    
  353. 0,0,    6,14,    6,15,    13,37,    
  354. 1,3,    6,16,    9,24,    6,17,    
  355. 6,18,    6,19,    10,25,    7,7,    
  356. 6,18,    14,39,    6,20,    11,26,    
  357. 17,46,    6,21,    18,47,    21,53,    
  358. 22,22,    6,18,    8,8,    11,27,    
  359. 12,29,    14,40,    12,30,    19,49,    
  360. 12,31,    22,0,    19,50,    11,28,    
  361. 24,54,    16,43,    12,32,    12,33,    
  362. 12,34,    16,44,    20,47,    12,33,    
  363. 16,45,    12,35,    25,55,    23,23,    
  364. 12,36,    20,52,    19,51,    26,57,    
  365. 12,33,    28,60,    29,61,    22,22,    
  366. 23,0,    30,62,    31,63,    32,64,    
  367. 33,65,    34,66,    36,68,    35,65,    
  368. 37,70,    39,72,    41,41,    49,84,    
  369. 52,87,    22,22,    35,67,    22,22,    
  370. 53,88,    54,89,    55,90,    41,0,    
  371. 57,91,    60,93,    23,23,    40,73,    
  372. 40,73,    40,73,    40,73,    40,73,    
  373. 40,73,    40,73,    40,73,    40,73,    
  374. 40,73,    61,94,    56,56,    58,58,    
  375. 23,23,    62,95,    23,23,    59,59,    
  376. 64,98,    41,41,    65,99,    56,0,    
  377. 58,0,    66,100,    67,101,    41,41,    
  378. 59,0,    68,102,    70,104,    72,105,    
  379. 69,69,    73,106,    74,107,    41,41,    
  380. 82,110,    41,41,    84,111,    87,112,    
  381. 88,113,    69,0,    89,114,    90,115,    
  382. 91,116,    56,56,    58,58,    92,0,    
  383. 93,117,    96,118,    59,59,    56,56,    
  384. 58,58,    97,119,    100,120,    101,121,    
  385. 59,59,    102,122,    22,22,    56,56,    
  386. 58,92,    56,56,    58,58,    69,69,    
  387. 59,59,    71,71,    59,59,    103,0,    
  388. 104,123,    69,69,    105,124,    40,74,    
  389. 108,0,    109,0,    71,0,    110,125,    
  390. 111,126,    69,103,    112,127,    69,69,    
  391. 115,128,    23,23,    63,96,    63,96,    
  392. 63,96,    63,96,    63,96,    63,96,    
  393. 63,96,    63,96,    63,96,    63,96,    
  394. 120,129,    121,130,    125,133,    126,134,    
  395. 71,71,    127,135,    128,136,    75,75,    
  396. 41,41,    129,137,    71,71,    130,138,    
  397. 76,76,    133,139,    135,141,    136,142,    
  398. 75,0,    138,143,    71,71,    139,144,    
  399. 71,71,    76,0,    140,0,    141,145,    
  400. 143,147,    77,77,    144,148,    146,0,    
  401. 148,149,    149,150,    80,80,    0,0,    
  402. 56,56,    58,58,    77,0,    0,0,    
  403. 0,0,    59,59,    75,75,    80,0,    
  404. 0,0,    0,0,    123,123,    76,76,    
  405. 75,75,    0,0,    0,0,    0,0,    
  406. 0,0,    76,76,    69,69,    123,0,    
  407. 75,75,    0,0,    75,75,    124,124,    
  408. 77,77,    76,76,    63,97,    76,76,    
  409. 134,134,    80,80,    77,77,    0,0,    
  410. 124,0,    0,0,    0,0,    80,80,    
  411. 0,0,    134,0,    77,108,    0,0,    
  412. 77,77,    123,123,    0,0,    80,109,    
  413. 0,0,    80,80,    0,0,    123,123,    
  414. 0,0,    142,142,    0,0,    71,71,    
  415. 0,0,    0,0,    124,124,    123,131,    
  416. 0,0,    123,123,    142,0,    134,134,    
  417. 124,124,    0,0,    0,0,    0,0,    
  418. 0,0,    134,134,    0,0,    0,0,    
  419. 124,132,    0,0,    124,124,    0,0,    
  420. 0,0,    134,140,    0,0,    134,134,    
  421. 0,0,    0,0,    0,0,    0,0,    
  422. 142,142,    0,0,    0,0,    0,0,    
  423. 0,0,    75,75,    142,142,    0,0,    
  424. 0,0,    0,0,    76,76,    0,0,    
  425. 0,0,    0,0,    142,146,    0,0,    
  426. 142,142,    0,0,    0,0,    0,0,    
  427. 0,0,    0,0,    0,0,    77,77,    
  428. 0,0,    0,0,    0,0,    0,0,    
  429. 80,80,    0,0,    0,0,    0,0,    
  430. 0,0,    0,0,    0,0,    0,0,    
  431. 0,0,    0,0,    0,0,    0,0,    
  432. 123,123,    0,0,    0,0,    0,0,    
  433. 0,0,    0,0,    0,0,    0,0,    
  434. 0,0,    0,0,    0,0,    0,0,    
  435. 0,0,    124,124,    0,0,    0,0,    
  436. 0,0,    0,0,    134,134,    0,0,    
  437. 0,0,    0,0,    0,0,    0,0,    
  438. 0,0,    0,0,    0,0,    0,0,    
  439. 0,0,    0,0,    0,0,    0,0,    
  440. 0,0,    0,0,    0,0,    0,0,    
  441. 0,0,    0,0,    0,0,    142,142,    
  442. 0,0};
  443. struct yysvf yysvec[] ={
  444. 0,    0,    0,
  445. yycrank+-1,    0,        yyvstop+1,
  446. yycrank+-2,    yysvec+1,    yyvstop+3,
  447. yycrank+-3,    yysvec+1,    yyvstop+5,
  448. yycrank+0,    0,        yyvstop+7,
  449. yycrank+1,    0,        yyvstop+9,
  450. yycrank+5,    0,        yyvstop+11,
  451. yycrank+-8,    0,        yyvstop+13,
  452. yycrank+-19,    0,        yyvstop+16,
  453. yycrank+3,    0,        0,    
  454. yycrank+4,    0,        0,    
  455. yycrank+23,    0,        0,    
  456. yycrank+32,    0,        0,    
  457. yycrank+1,    0,        0,    
  458. yycrank+21,    0,        0,    
  459. yycrank+3,    0,        0,    
  460. yycrank+36,    0,        0,    
  461. yycrank+8,    0,        0,    
  462. yycrank+18,    0,        0,    
  463. yycrank+38,    0,        0,    
  464. yycrank+38,    0,        0,    
  465. yycrank+18,    0,        0,    
  466. yycrank+-127,    yysvec+7,    yyvstop+19,
  467. yycrank+-150,    yysvec+8,    yyvstop+21,
  468. yycrank+32,    0,        0,    
  469. yycrank+34,    0,        0,    
  470. yycrank+51,    0,        0,    
  471. yycrank+30,    0,        0,    
  472. yycrank+53,    0,        0,    
  473. yycrank+50,    0,        0,    
  474. yycrank+51,    0,        0,    
  475. yycrank+50,    0,        0,    
  476. yycrank+47,    0,        0,    
  477. yycrank+56,    0,        0,    
  478. yycrank+68,    0,        0,    
  479. yycrank+59,    0,        0,    
  480. yycrank+57,    0,        0,    
  481. yycrank+54,    0,        0,    
  482. yycrank+47,    0,        0,    
  483. yycrank+55,    0,        0,    
  484. yycrank+135,    0,        0,    
  485. yycrank+-169,    0,        yyvstop+23,
  486. yycrank+48,    0,        0,    
  487. yycrank+44,    0,        0,    
  488. yycrank+49,    0,        0,    
  489. yycrank+45,    0,        0,    
  490. yycrank+50,    0,        0,    
  491. yycrank+55,    0,        0,    
  492. yycrank+0,    0,        yyvstop+25,
  493. yycrank+57,    0,        0,    
  494. yycrank+46,    0,        0,    
  495. yycrank+47,    0,        0,    
  496. yycrank+71,    0,        0,    
  497. yycrank+64,    0,        0,    
  498. yycrank+66,    0,        0,    
  499. yycrank+59,    0,        0,    
  500. yycrank+-193,    0,        yyvstop+27,
  501. yycrank+80,    0,        0,    
  502. yycrank+-194,    0,        0,    
  503. yycrank+-198,    0,        yyvstop+29,
  504. yycrank+81,    0,        0,    
  505. yycrank+147,    0,        0,    
  506. yycrank+151,    0,        0,    
  507. yycrank+214,    0,        0,    
  508. yycrank+154,    0,        0,    
  509. yycrank+156,    0,        0,    
  510. yycrank+91,    0,        0,    
  511. yycrank+105,    0,        0,    
  512. yycrank+97,    0,        0,    
  513. yycrank+-211,    0,        0,    
  514. yycrank+109,    0,        0,    
  515. yycrank+-244,    0,        yyvstop+31,
  516. yycrank+110,    0,        0,    
  517. yycrank+167,    0,        0,    
  518. yycrank+168,    0,        0,    
  519. yycrank+-278,    0,        yyvstop+33,
  520. yycrank+-283,    0,        yyvstop+35,
  521. yycrank+-296,    0,        0,    
  522. yycrank+0,    0,        yyvstop+37,
  523. yycrank+0,    0,        yyvstop+39,
  524. yycrank+-301,    0,        0,    
  525. yycrank+0,    0,        yyvstop+41,
  526. yycrank+117,    0,        0,    
  527. yycrank+0,    0,        yyvstop+43,
  528. yycrank+109,    0,        0,    
  529. yycrank+0,    0,        yyvstop+45,
  530. yycrank+0,    0,        yyvstop+47,
  531. yycrank+105,    0,        0,    
  532. yycrank+174,    0,        0,    
  533. yycrank+112,    0,        0,    
  534. yycrank+112,    0,        0,    
  535. yycrank+178,    0,        0,    
  536. yycrank+-217,    yysvec+58,    yyvstop+49,
  537. yycrank+182,    0,        0,    
  538. yycrank+0,    0,        yyvstop+51,
  539. yycrank+0,    0,        yyvstop+53,
  540. yycrank+183,    0,        0,    
  541. yycrank+187,    0,        0,    
  542. yycrank+0,    0,        yyvstop+55,
  543. yycrank+0,    0,        yyvstop+57,
  544. yycrank+125,    0,        0,    
  545. yycrank+121,    0,        0,    
  546. yycrank+191,    0,        0,    
  547. yycrank+-237,    yysvec+69,    yyvstop+59,
  548. yycrank+146,    0,        0,    
  549. yycrank+148,    0,        0,    
  550. yycrank+0,    0,        yyvstop+61,
  551. yycrank+0,    0,        yyvstop+63,
  552. yycrank+-242,    yysvec+77,    yyvstop+65,
  553. yycrank+-243,    yysvec+80,    yyvstop+67,
  554. yycrank+144,    0,        0,    
  555. yycrank+148,    0,        0,    
  556. yycrank+158,    0,        0,    
  557. yycrank+0,    0,        yyvstop+69,
  558. yycrank+0,    0,        yyvstop+71,
  559. yycrank+146,    0,        0,    
  560. yycrank+0,    0,        yyvstop+73,
  561. yycrank+0,    0,        yyvstop+75,
  562. yycrank+0,    0,        yyvstop+77,
  563. yycrank+0,    0,        yyvstop+79,
  564. yycrank+164,    0,        0,    
  565. yycrank+173,    0,        0,    
  566. yycrank+0,    0,        yyvstop+81,
  567. yycrank+-313,    0,        0,    
  568. yycrank+-326,    0,        0,    
  569. yycrank+165,    0,        0,    
  570. yycrank+243,    0,        0,    
  571. yycrank+166,    0,        0,    
  572. yycrank+171,    0,        0,    
  573. yycrank+235,    0,        0,    
  574. yycrank+172,    0,        0,    
  575. yycrank+0,    0,        yyvstop+83,
  576. yycrank+0,    0,        yyvstop+85,
  577. yycrank+173,    0,        0,    
  578. yycrank+-331,    0,        0,    
  579. yycrank+187,    0,        0,    
  580. yycrank+255,    0,        0,    
  581. yycrank+0,    0,        yyvstop+87,
  582. yycrank+190,    0,        0,    
  583. yycrank+194,    0,        0,    
  584. yycrank+-284,    yysvec+134,    yyvstop+89,
  585. yycrank+249,    0,        0,    
  586. yycrank+-352,    0,        0,    
  587. yycrank+250,    0,        0,    
  588. yycrank+199,    0,        0,    
  589. yycrank+0,    0,        yyvstop+91,
  590. yycrank+-289,    yysvec+142,    yyvstop+93,
  591. yycrank+0,    0,        yyvstop+95,
  592. yycrank+184,    0,        0,    
  593. yycrank+255,    0,        0,    
  594. yycrank+0,    0,        yyvstop+97,
  595. 0,    0,    0};
  596. struct yywork *yytop = yycrank+463;
  597. struct yysvf *yybgin = yysvec+1;
  598. char yymatch[] ={
  599. 00  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
  600. 01  ,01  ,012 ,01  ,01  ,01  ,01  ,01  ,
  601. 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
  602. 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
  603. 040 ,01  ,01  ,01  ,01  ,01  ,'&' ,01  ,
  604. 01  ,01  ,01  ,01  ,01  ,01  ,'.' ,01  ,
  605. '0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,
  606. '0' ,'0' ,'&' ,01  ,01  ,01  ,01  ,01  ,
  607. 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
  608. 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
  609. 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
  610. 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
  611. 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
  612. 01  ,01  ,01  ,01  ,01  ,01  ,01  ,'o' ,
  613. 01  ,01  ,01  ,'o' ,01  ,'o' ,01  ,01  ,
  614. 01  ,01  ,01  ,01  ,'o' ,01  ,01  ,01  ,
  615. 0};
  616. char yyextra[] ={
  617. 0,0,0,0,0,0,0,0,
  618. 0,0,0,0,0,0,0,0,
  619. 0,0,0,0,0,0,0,0,
  620. 0,0,0,0,0,0,0,0,
  621. 0,0,0,0,0,0,0,0,
  622. 0,0,0,0,0,0,0,0,
  623. 0};
  624. /*    ncform    4.1    83/08/11    */
  625.  
  626. int yylineno =1;
  627. # define YYU(x) x
  628. # define NLSTATE yyprevious=YYNEWLINE
  629. char yytext[YYLMAX];
  630. struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp;
  631. char yysbuf[YYLMAX];
  632. char *yysptr = yysbuf;
  633. int *yyfnd;
  634. extern struct yysvf *yyestate;
  635. int yyprevious = YYNEWLINE;
  636. yylook(){
  637.     register struct yysvf *yystate, **lsp;
  638.     register struct yywork *yyt;
  639.     struct yysvf *yyz;
  640.     int yych;
  641.     struct yywork *yyr;
  642. # ifdef LEXDEBUG
  643.     int debug;
  644. # endif
  645.     char *yylastch;
  646.     /* start off machines */
  647. # ifdef LEXDEBUG
  648.     debug = 0;
  649. # endif
  650.     if (!yymorfg)
  651.         yylastch = yytext;
  652.     else {
  653.         yymorfg=0;
  654.         yylastch = yytext+yyleng;
  655.         }
  656.     for(;;){
  657.         lsp = yylstate;
  658.         yyestate = yystate = yybgin;
  659.         if (yyprevious==YYNEWLINE) yystate++;
  660.         for (;;){
  661. # ifdef LEXDEBUG
  662.             if(debug)fprintf(yyout,"state %d\n",yystate-yysvec-1);
  663. # endif
  664.             yyt = yystate->yystoff;
  665.             if(yyt == yycrank){        /* may not be any transitions */
  666.                 yyz = yystate->yyother;
  667.                 if(yyz == 0)break;
  668.                 if(yyz->yystoff == yycrank)break;
  669.                 }
  670.             *yylastch++ = yych = input();
  671.         tryagain:
  672. # ifdef LEXDEBUG
  673.             if(debug){
  674.                 fprintf(yyout,"char ");
  675.                 allprint(yych);
  676.                 putchar('\n');
  677.                 }
  678. # endif
  679.             yyr = yyt;
  680.             if ( (int)yyt > (int)yycrank){
  681.                 yyt = yyr + yych;
  682.                 if (yyt <= yytop && yyt->verify+yysvec == yystate){
  683.                     if(yyt->advance+yysvec == YYLERR)    /* error transitions */
  684.                         {unput(*--yylastch);break;}
  685.                     *lsp++ = yystate = yyt->advance+yysvec;
  686.                     goto contin;
  687.                     }
  688.                 }
  689. # ifdef YYOPTIM
  690.             else if((int)yyt < (int)yycrank) {        /* r < yycrank */
  691.                 yyt = yyr = yycrank+(yycrank-yyt);
  692. # ifdef LEXDEBUG
  693.                 if(debug)fprintf(yyout,"compressed state\n");
  694. # endif
  695.                 yyt = yyt + yych;
  696.                 if(yyt <= yytop && yyt->verify+yysvec == yystate){
  697.                     if(yyt->advance+yysvec == YYLERR)    /* error transitions */
  698.                         {unput(*--yylastch);break;}
  699.                     *lsp++ = yystate = yyt->advance+yysvec;
  700.                     goto contin;
  701.                     }
  702.                 yyt = yyr + YYU(yymatch[yych]);
  703. # ifdef LEXDEBUG
  704.                 if(debug){
  705.                     fprintf(yyout,"try fall back character ");
  706.                     allprint(YYU(yymatch[yych]));
  707.                     putchar('\n');
  708.                     }
  709. # endif
  710.                 if(yyt <= yytop && yyt->verify+yysvec == yystate){
  711.                     if(yyt->advance+yysvec == YYLERR)    /* error transition */
  712.                         {unput(*--yylastch);break;}
  713.                     *lsp++ = yystate = yyt->advance+yysvec;
  714.                     goto contin;
  715.                     }
  716.                 }
  717.             if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){
  718. # ifdef LEXDEBUG
  719.                 if(debug)fprintf(yyout,"fall back to state %d\n",yystate-yysvec-1);
  720. # endif
  721.                 goto tryagain;
  722.                 }
  723. # endif
  724.             else
  725.                 {unput(*--yylastch);break;}
  726.         contin:
  727. # ifdef LEXDEBUG
  728.             if(debug){
  729.                 fprintf(yyout,"state %d char ",yystate-yysvec-1);
  730.                 allprint(yych);
  731.                 putchar('\n');
  732.                 }
  733. # endif
  734.             ;
  735.             }
  736. # ifdef LEXDEBUG
  737.         if(debug){
  738.             fprintf(yyout,"stopped at %d with ",*(lsp-1)-yysvec-1);
  739.             allprint(yych);
  740.             putchar('\n');
  741.             }
  742. # endif
  743.         while (lsp-- > yylstate){
  744.             *yylastch-- = 0;
  745.             if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){
  746.                 yyolsp = lsp;
  747.                 if(yyextra[*yyfnd]){        /* must backup */
  748.                     while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){
  749.                         lsp--;
  750.                         unput(*yylastch--);
  751.                         }
  752.                     }
  753.                 yyprevious = YYU(*yylastch);
  754.                 yylsp = lsp;
  755.                 yyleng = yylastch-yytext+1;
  756.                 yytext[yyleng] = 0;
  757. # ifdef LEXDEBUG
  758.                 if(debug){
  759.                     fprintf(yyout,"\nmatch ");
  760.                     sprint(yytext);
  761.                     fprintf(yyout," action %d\n",*yyfnd);
  762.                     }
  763. # endif
  764.                 return(*yyfnd++);
  765.                 }
  766.             unput(*yylastch);
  767.             }
  768.         if (yytext[0] == 0  /* && feof(yyin) */)
  769.             {
  770.             yysptr=yysbuf;
  771.             return(0);
  772.             }
  773.         yyprevious = yytext[0] = input();
  774.         if (yyprevious>0)
  775.             output(yyprevious);
  776.         yylastch=yytext;
  777. # ifdef LEXDEBUG
  778.         if(debug)putchar('\n');
  779. # endif
  780.         }
  781.     }
  782. yyback(p, m)
  783.     int *p;
  784. {
  785. if (p==0) return(0);
  786. while (*p)
  787.     {
  788.     if (*p++ == m)
  789.         return(1);
  790.     }
  791. return(0);
  792. }
  793.     /* the following are only used in the lex library */
  794. yyinput(){
  795.     return(input());
  796.     }
  797. yyoutput(c)
  798.   int c; {
  799.     output(c);
  800.     }
  801. yyunput(c)
  802.    int c; {
  803.     unput(c);
  804.     }
  805.